Proving the correctness of algorithmic debugging for functional programs

نویسندگان

  • Yong Luo
  • Olaf Chitil
چکیده

This paper presents a formal model of tracing for functional programs based on a small-step operational semantics. The model records the computation of a functional program in a graph which can be utilised for various purposes such as algorithmic debugging. The main contribution of this paper is to prove the correctness of algorithmic debugging for functional programs based on the model. Although algorithmic debugging for functional programs is implemented in several tracers such as Hat, the correctness has not been formally proved before. The difficulty of the proof is to find a suitable induction principle and a sufficiently general induction hypothesis.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Logic + control: On program construction and verification

We present a Prolog program (the SAT solver of Howe and King) as a logic program with added control. The control consists of a selection rule (delays of Prolog) and pruning the search space. We construct the logic program together with proofs of its correctness and completeness, with respect to a formal specification. This is augmented by a proof of termination under any selection rule. Correct...

متن کامل

Logic + control: An example of program construction

We present a Prolog program (the SAT solver of Howe and King) as a logic program with added control. The control consists of a selection rule (delays of Prolog) and pruning the search space. We construct the logic program together with proofs of its correctness and completeness, with respect to a formal specification. This is augmented by a proof of termination under any selection rule. Correct...

متن کامل

Replacing Unevaluated Parts in the Traces of Functional Programs

In functional programming languages such as Haskell, it happens often that some parts of a program are not evaluated because their values are not demanded. In practice, those unevaluated parts are often replaced by a placeholder (e.g. _) in order to keep the trace size smaller. For algorithmic debugging, this also makes the questions shorter and clearer. In this paper, we present a formal model...

متن کامل

Computer Science at Kent Replacing Unevaluated Parts in the Traces of Functional Programs

In non-strict functional programming languages such as Haskell, it happens often that some parts of a program are not evaluated because their values are not demanded. In practice, those unevaluated parts are often replaced by a placeholder (e.g. _) in order to keep the trace size smaller. In the process of algorithmic debugging, one needs to answer several questions in order to locate a program...

متن کامل

Abstract Diagnosis of Functional Programs

Diagnosis of Functional Programs M. Alpuente, M. Comini, S. Escobar, M. Falaschi, and S. Lucas 1 Departamento de Sistemas Informáticos y Computación-DSIC Technical University of Valencia, Camino de Vera s/n, 46022 Valencia, Spain. {alpuente,sescobar,slucas}@dsic.upv.es 2 Dipartimento di Matematica e Informatica University of Udine, Via delle Scienze 206, 33100 Udine, Italy. {comini,falaschi}@di...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2006